package testesinterfacegrafica;

import entidadesparaguardardadosteste.CasoDeTeste;
import gui.ClasseEMetodos;
import gui.DeclaracaoDeMetodo;
import gui.ExecutadorDeCasosDeTeste;
import gui.FachadaManipulacaoClassesDeUmProjeto;
import interfaceusuario.TelaDefinaEntradasESaidasDoMetodo;
import interfaceusuario.TelaResultadosDosTestes;

import java.util.HashMap;
import java.util.LinkedList;

public class TesteTelaResultadosDosTestes {

	/**
	 * @param args
	 */
	public static void main(String[] args) 
	{
		FachadaManipulacaoClassesDeUmProjeto fachada = FachadaManipulacaoClassesDeUmProjeto.getInstance();
		LinkedList<ClasseEMetodos> classesEMetodos = 
				fachada.pegarTodasAsClassesDoProjeto("C:/Users/joao/Documents/eclipse new projets/ProjetoFormatacaoBugada");
		
		DeclaracaoDeMetodo declaracaoDeMetodo = fachada.getAssociaClassesEMetodosANomes().pegarDeclaracaoDeMetodoDeNome("int somar(int x, int y)", "p.ClasseFormBugada");
		//DeclaracaoDeMetodo declaracaoDeMetodo = fachada.getAssociaClassesEMetodosANomes().pegarDeclaracaoDeMetodoDeNome("void setSomar(int novoValor)");
		CasoDeTeste casoDeTeste = new CasoDeTeste();
		casoDeTeste.setMetodo(declaracaoDeMetodo);
		LinkedList<CasoDeTeste> casosDeTesteSendoCriados = new LinkedList<CasoDeTeste>();
		casosDeTesteSendoCriados.add(casoDeTeste);
		
		TelaDefinaEntradasESaidasDoMetodo tela = new TelaDefinaEntradasESaidasDoMetodo(casosDeTesteSendoCriados);
		tela.desenharTela();
		while(casoDeTeste.oCasoDeTesteEstahCompleto() == false)
		{
			
		}
		
		CasoDeTeste casoDeTeste2 = tela.getCasoDeTeste();
		System.out.println("caso de teste modificado obtido com sucesso");
		casoDeTeste.setNomeClasseAssociadaAoCasoDeTeste("p.ClasseFormBugada");
		LinkedList<CasoDeTeste> casosDeTeste = new LinkedList<CasoDeTeste>();
		casosDeTeste.add(casoDeTeste2);
		
		ExecutadorDeCasosDeTeste executador = new ExecutadorDeCasosDeTeste(casosDeTeste);
		executador.executarTodosOsCasosDeTeste();
		System.out.println("terminou de executar casos de teste");
		
		HashMap<CasoDeTeste,Boolean> executados = executador.getCasosDeTesteESeEleConseguiuSerExecutado();
		
		HashMap<CasoDeTeste,Object> resultados = executador.getCasosDeTesteERetornosAposExecucao();
		
		TelaResultadosDosTestes telaResultados = new TelaResultadosDosTestes(casosDeTeste, resultados, executados, "suiteQualquer");
		telaResultados.desenharTelaResultadosDosTestes();
	}

}
